﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace J_FoundationClasses.Programacao
{
    public enum TipoSimbo
    {
        Rotulo,
        Programa
        // segmento ainda não
    }
    public class SimboloFonte
    {
        public TipoSimbo Tipo;
        public string Lexema;
        public UInt64 edcLocal;
        public bool Externo;
        public bool Definido; // pelo rótulo da linha neste programa
        public bool Start = false;

        // Constructors
        public SimboloFonte(string prmRotulo)
        {
            // para rótulos locais
            Tipo = TipoSimbo.Rotulo;
            Lexema = prmRotulo;
            Externo = false;
            Definido = true;
        }
        public SimboloFonte(bool prmExt, string prmRotulo)
        {
            // para rótulos externos e locais
            Tipo = TipoSimbo.Rotulo;
            Lexema = prmRotulo;
            Externo = prmExt;
            Definido = !prmExt;
        }
        public SimboloFonte(TipoSimbo prmTipo, string prmRotulo)
        {
            // para símbolos gerais
            Tipo = prmTipo;
            Lexema = prmRotulo;
            Externo = false;
            Definido = true;
        }
        public void Localizar(UInt64 prmEdc)
        {
            edcLocal = prmEdc;
            //Vinculado = true;
        }
    }
}
